/* 
* 
* TabVD is a Virtual Desktop Client/Server designed specifically for connecting 
*  from Tablet like devices.
*  
*  Copyright (C) 2011 Subhabrata Ghosh 
*  
*  This program is free software: you can redistribute it and/or modify it under 
*  the terms of the GNU General Public License as published by the Free Software 
*  Foundation, either version 3 of the License, or (at your option) any later 
*  version. 
*  
*  This program is distributed in the hope that it will be useful, but WITHOUT 
*  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
*  FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 
*  details. 
*  
*  You should have received a copy of the GNU General Public License along with 
*  this program. If not, see <http://www.gnu.org/licenses/>. 
* 
* 
*/

#ifndef ICONFIGURABLE_H_
#define ICONFIGURABLE_H_

#include "AbstractConfiguration.h"

namespace tabvd {

	class IConfigurable {
        protected:
            IConfigurable() {};
            virtual ~IConfigurable() {};
        public:
            /* --------------------------------------------------------------------------*/
            /**
            * @Synopsis  Setup the instance configuration elements with the default values.
            *
            * @Param config
            *
            * @Returns   
            */
            /* ----------------------------------------------------------------------------*/
            virtual bool createDefault(AbstractConfiguration* config) = 0;

            /* --------------------------------------------------------------------------*/
            /**
            * @Synopsis Update the instance with the new configuration values.  
            *
            * @Param config
            *
            * @Returns   
            */
            /* ----------------------------------------------------------------------------*/
            virtual bool update(AbstractConfiguration* config) = 0;            
    };
}
#endif /* ICONFIGURABLE_H_ */
